package com.lance.answer.dto;

import com.fasterxml.jackson.annotation.JsonProperty;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;

import java.util.List;

@NoArgsConstructor
@Data
@AllArgsConstructor
public class StudentSituation {


    @JsonProperty("code")
    private String code;
    @JsonProperty("content")
    private ContentDTO content;
    @JsonProperty("ts")
    private Long ts;

    @NoArgsConstructor
    @Data
    public static class ContentDTO {
        @JsonProperty("selectCourseId")
        private Integer selectCourseId;
        @JsonProperty("totalScore")
        private Integer totalScore;
        @JsonProperty("studyState")
        private Integer studyState;
        @JsonProperty("openCourseId")
        private Integer openCourseId;
        @JsonProperty("scoreStatus")
        private Integer scoreStatus;
        @JsonProperty("semesterId")
        private Integer semesterId;
        @JsonProperty("status")
        private Integer status;
        @JsonProperty("published")
        private Integer published;
        @JsonProperty("startDate")
        private Long startDate;
        @JsonProperty("endDate")
        private Long endDate;
        @JsonProperty("studyProgressList")
        private List<StudyProgressListDTO> studyProgressList;

        @NoArgsConstructor
        @Data
        public static class StudyProgressListDTO {
            @JsonProperty("sort")
            private Integer sort;
            @JsonProperty("openCourseId")
            private Integer openCourseId;
            @JsonProperty("ruleName")
            private String ruleName;
            @JsonProperty("ruleTotal")
            private Integer ruleTotal;
            @JsonProperty("studyCount")
            private Integer studyCount;
            @JsonProperty("studyScore")
            private Integer studyScore;
            @JsonProperty("scoreRatio")
            private Integer scoreRatio;
            @JsonProperty("objType")
            private Integer objType;
            @JsonProperty("verbType")
            private Integer verbType;
        }
    }
}
